本文作者:李婷婷
文字编辑:王玉婷
技术总编:余术玲
爬虫俱乐部将于2020年8月25日至28日在线上举行Stata数据分析法律与制度专题训练营,主要是为了让学员掌握Stata软件进阶操作,涉及内容包括基本字符串函数及其应用、正则表达式、法律与制度数据网络爬虫技巧、判案文书的文本分析等技术。详情请参考《8月Stata数据分析法律与制度专场来啦!》
另外,爬虫俱乐部于2020年7月在线上举办的Stata与Python编程技术训练营已圆满结束。应广大学员需求,我们的课程现已在腾讯课堂双双上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠劵!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!
导读
Stata中通常把变量分为三类,分别为数值型、字符型和日期型。在进行一些数据整理的过程中,我们可能会需要把字符型的变量转换为数值型,或者将数值型的变量转换为字符型。这时destring和tostring命令就可以帮助我们实现数据类型转换。接下来我们就一起看一下吧~
一、destring——将字符型变量转换为数值型变量
destring [varlist] , {generate(newvarlist)|replace} [destring_options]varlist是指需要进行变量类型转换的变量,generate (newvarlist)表示可以把转换后的数据生成一列新的变量,这里也可以用replace选项直接将原始数据类型替换为转换后的数据类型。同时destring命令还有很多其它的选项,如ignore、force、float、percent、dpcomma。ignore("chars" [, ignoreopts])表示删除指定的非数字字符,字符或字节,以及非法的Unicode字符;force表示把非数值型字符串转换为缺失值;float表示生成浮点型的数值变量;percent表示将百分比形式的变量转换为小数形式;dpcomma表示将逗号作为小数转换为句点十进制格式。接下来举一个简单的例子来说明destring命令的用法。首先我们用input命令手动生成数据,并查看数据集的信息。clear all
input str3 id str3 price str4 mpg str14 date str3 percent
001 4000 18 "1999 12 10" "%21"
002 3710 22 "2000 10 30" "%35"
003 5325 15 "1998 06 15" "%23"
004 4082 16 "2001 07 19" "%21"
end
describe
list
从数据集的信息可以看出当前变量的存贮类型都为字符型,这时我们不能对变量进行描述性统计或数值计算。因此,这时如果想对数据中的变量进行描述性统计或数值计算,就需要将数据集中的字符型变量转换为数值型变量。这里我们用destring命令进行转换,并替换掉原始变量。destring,replace
从图中可以看出,id、price、mpg变量已经由字符型转换为数值型,而date和percent变量显示变量中存在非数值型变量,没有进行转换。那我们要怎么对这两列变量进行转换呢?这时候destring命令的一些其它选项就发挥作用了。我们用destring的ignore选项来忽略date变量中的空格并进行变量类型转换;用destring的percent选项将percent这列变量由百分比形式转换为小数形式,并进行变量类型转换。destring date,replace ignore(" ")
destring percent,replace percent
describe
list date percent
从图中可以看出,date和percent变量由字符型转换为了数值型,且date变量中的空格消失了;percent变量也由百分比形式变为了小数形式。二、tostring——将数值型变量转换为字符型变量
tostring varlist , {generate(newvarlist)|replace} [tostring_options]其中varlist、generate(newvarlist)、replace等与上述destring命令中的选项含义类似,这里就不再进行说明。同时tostring命令也还有很多其它的选项,如force、format、usedisplayformat。force表示强制转换,忽视信息丢失;format表示使用指定格式转换;usedisplayformat表示使用显示格式转换。接下来以一个例子来说明tostring命令的用法。首先生成一些数据,并查看数据集的信息。clear all
input str9 name str3 month day year
Jack jan 20 2000
Merry may 15 2001
Tony apr 5 2001
Peter jul 16 2000
end
describe
从显示的数据集信息中可以看出,name和month变量为字符型变量,而day和year变量为数值型变量。我们用list命令看一下已有的数据。这时,如果想新生成一个变量为month、day、year三个变量相加,就会发现因为month是字符型变量,day和year是数值型变量,不能进行相加。这时我们就需要把数值型变量转换为字符型变量,来生成新的变量。我们用tostring命令对year和day这两个变量的类型进行转换,并查看数据集信息。tostring year day, replace
describe
可以看出现在day和year变量由数值型转换为了字符型。现在我们就可以生成一个新的日期变量为month、day和year相加的变量。gen date1 = month+"/"+day+"/"+year
list
以上就是本文对destring和tostring命令的介绍了。在实际操作中,大家可以根据自己的需要来对数据类型进行转换~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
明星闪闪亮:各校高被引论文
split和nsplit助你轻松拆分
集成学习介绍之三——Stacking算法
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。